Simplification & subdivision#99
Conversation
|
This looks great, thank you for putting it together! FYI there is also some additional remeshing stuff in #86 that I really need to get merged, if any of it is useful to you. Design question: should high-level remeshing schemes (such as the quadric simplification added here) be contained in the mutation manager, or external to it? E.g., should it be |
|
Interesting point. I went for the second option since it was the easiest way to incorporate mutation managers into some of my existing code which didn't originally use them. Aesthetically, the second option appeals to me. But the first may be fit better with the rest of geometry-central. There are already a lot of powerful mega-classes floating around :) And it does seem nice to give the mutation manager ownership of the algorithms which primarily mutate meshes. One other question to consider is whether we expect to pass mutation managers to functions which live inside of other classes. E.g., would we ever want to pass a mutation manager to |
|
Just double-checking, is this good-to-go as far as you're concerned? if so I think we can merge it in. I didn't test it myself but everything looks sane |
I added implementations of quadric error simplification, Catmull-Clark subdivision, and Loop subdivision. Quadric error simplification and Loop subdivision optionally take a
MutationManagerargument. Unfortunately, Catmull-Clark doesn't, sinceMutationManageris tailored for triangle meshes at the moment.I also changed
MutationManager's mutations to return the newly-created mesh element (i.e.mutationManager.collapseEdge(e)now returns the new vertex).